home *** CD-ROM | disk | FTP | other *** search
/ Apple Reference & Presen…tion Library 2 (Reseller) / Apple R&P Lib Reseller v2.0.iso / 3-Demos / HyperCard Demos / HyperMovies / CL⁄1 / CL_1 / stack.txt < prev   
Text File  |  1989-10-27  |  10KB  |  370 lines

  1. -- stack: in
  2. -- format: 8 (HyperCard 1)
  3. -- flags: 0x1000 (none)
  4. -- protect password hash: 0
  5. -- maximum user level: 5 (scripting)
  6. -- window: Rect(x1=0, y1=0, x2=0, y2=0)
  7. -- screen: Rect(x1=0, y1=0, x2=0, y2=0)
  8. -- card dimensions: w=0 h=0
  9. -- scroll: x=0 y=0
  10. -- background count: 7
  11. -- first background id: 6049
  12. -- card count: 41
  13. -- first card id: 5615
  14. -- list block id: 18026
  15. -- print block id: 10470
  16. -- font table block id: 0
  17. -- style table block id: 0
  18. -- free block count: 13
  19. -- free size: 21824 bytes
  20. -- total size: 270336 bytes
  21. -- stack block size: 9216 bytes
  22. -- created by hypercard version: 0x00000000
  23. -- compacted by hypercard version: 0x01208000
  24. -- modified by hypercard version: 0x01208000
  25. -- opened by hypercard version: 0x01228000
  26. -- patterns[0]: 0x0000000000000000
  27. -- patterns[1]: 0x8000000008000000
  28. -- patterns[2]: 0x8800220088002200
  29. -- patterns[3]: 0x8888222288882222
  30. -- patterns[4]: 0x88AA22AA88AA22AA
  31. -- patterns[5]: 0xCCAA33AACCAA33AA
  32. -- patterns[6]: 0xEEAABBAAEEAABBAA
  33. -- patterns[7]: 0xEEBBBBEEEEBBBBEE
  34. -- patterns[8]: 0xFFBBFFEEFFBBFFEE
  35. -- patterns[9]: 0xFFBBFFFFFFBBFFFF
  36. -- patterns[10]: 0x8010022001084004
  37. -- patterns[11]: 0xFFFFFFFFFFFFFFFF
  38. -- patterns[12]: 0x8822882288228822
  39. -- patterns[13]: 0x1122448811224488
  40. -- patterns[14]: 0xC4800C6843023026
  41. -- patterns[15]: 0xB130031BD8C00C8D
  42. -- patterns[16]: 0xAA00AA00AA00AA00
  43. -- patterns[17]: 0x8822552288225522
  44. -- patterns[18]: 0x8855225588552255
  45. -- patterns[19]: 0x77DD77DD77DD77DD
  46. -- patterns[20]: 0x8000000000000000
  47. -- patterns[21]: 0xAA55AA55AA55AA55
  48. -- patterns[22]: 0x038448300C020101
  49. -- patterns[23]: 0x8244394482010101
  50. -- patterns[24]: 0x8814224188412214
  51. -- patterns[25]: 0x8080413E080814E3
  52. -- patterns[26]: 0x22048C7422179810
  53. -- patterns[27]: 0xBE808808EB088880
  54. -- patterns[28]: 0x25C8328964244C92
  55. -- patterns[29]: 0xA29C41BE2AC914EB
  56. -- patterns[30]: 0x40A00000040A0000
  57. -- patterns[31]: 0x8040200002040800
  58. -- patterns[32]: 0xAA00800088008000
  59. -- patterns[33]: 0xFF80808080808080
  60. -- patterns[34]: 0x081C22C180010204
  61. -- patterns[35]: 0xFF808080FF080808
  62. -- patterns[36]: 0xF87422478F172271
  63. -- patterns[37]: 0xBF00BFBFB0B0B0B0
  64. -- patterns[38]: 0xFF7FBE5DA2418000
  65. -- patterns[39]: 0xFAF5FAF5A050A050
  66. -- checksum: 0x0
  67. ----- HyperTalk script -----
  68. -- Demo Stack b1.3
  69. -- 9 Feb 88
  70. -- Sioux Lacy, David Donaldson, Wayne Robertson
  71.  
  72. -- Demo Stack 2.0a13
  73. -- Last Modification: 4/27/88
  74. -- Modified by Mike Chiang
  75.  
  76. on domenu menu -- Script added by Animatrix 10/24/89
  77.   global RPstackname,RPcardname
  78.   if menu is in "Home,Quit HyperCard" then
  79.     if RPstackname is not empty then
  80.       answer "This will return to "&RPStackname&"."
  81.       set cursor to watch
  82.       lock screen
  83.       go card RPcardname of stack RPstackname
  84.       unlock screen with dissolve
  85.       exit domenu
  86.     else pass domenu -- if RPstackname is empty
  87.   else
  88.     pass domenu -- if menu is not in home or quit
  89.   end if
  90. end domenu
  91.  
  92.  
  93. function inDebug
  94. --used mainly for trapping arrow keys
  95. return (the shiftKey is down and the optionKey is down)
  96. end inDebug
  97.  
  98. function debug
  99. --used for turning on and off the debugging traps
  100. --return true if the debugging is turned on
  101. --return false if the debugging is turned off
  102. return false
  103. end debug
  104.  
  105.  
  106. function stripSpaces string
  107. get offset (return, string)
  108. if it is not 0 then put empty into char it of string
  109. repeat
  110.   get offset (" ", string)
  111.   if it is 0 then return string
  112.   put empty into char it of string
  113. end repeat
  114. end stripSpaces
  115.  
  116. on openStack
  117.   if the version < 1.2 then
  118.     set lockMessages to true
  119.     answer "This stack requires HyperCard 1.2 or higher."
  120.     go home
  121.     set lockMessages to true
  122.     exit to HyperCard
  123.   end if
  124.  
  125.   --check if the stack is lock
  126.   set cantModify of this stack to false
  127.   if (the cantModify of this stack) then
  128.     set lockMessages to true
  129.     answer "Please unlock this stack in the Finder."
  130.     go home
  131.     set lockMessages to true
  132.     exit to HyperCard
  133.   end if
  134.  
  135.   global QuotaHasChanged,connectMode,barMargin,barWidth, botMargin,sideMargin
  136.   set userLevel to 5
  137.   set powerKeys to true
  138.   set blindTyping to false
  139.   put 15 into barMargin
  140.   put 15 into botMargin
  141.   put 15 into sideMargin
  142.   put 60 into barWidth
  143.  
  144.   put "Simulation" into connectMode --default
  145.  
  146.   --get the connection mode
  147.   --if connectMode is empty then
  148.   --get the connection mode
  149.   --set lockScreen to true
  150.   --set lockMessages to true
  151.   --push card
  152.   --go card "Connect Setup"
  153.   --put number of card buttons into numOptions
  154.   --repeat with i = 1 to numOptions
  155.   --if highlight of card button i then
  156.   --put short name of card button i into connectMode
  157.   --exit repeat
  158.   --end if
  159.   --end repeat
  160.   -- pop card
  161.   --set lockScreen to false
  162.   --set lockMessages to false
  163.   --end if
  164.   if connectMode is empty then put "Simulation" into connectMode
  165.   go to card "Connect Setup"
  166.  
  167.   --put false into QuotaHasChanged
  168.   --if the optionKey is not down then
  169.   -- hide menuBar
  170.   -- hide message box
  171.   --hide tool window
  172.   --hide pattern window
  173.   --go to card "Map of Regions"
  174.   --set cursor to 4
  175.   --send "RetrieveAllData" to bkgnd "Map"
  176.   --end if
  177. end openStack
  178.  
  179. on closeStack
  180.   set lockScreen to true
  181.   push card
  182.   go to card "Map of Regions"
  183.   send "EraseMap" to bkgnd "Map"
  184.   send "DisconnectFromVax" to bkgnd "Region Data"
  185.   hide field "status"
  186.   hide field "status backdrop"
  187.   choose browse tool
  188.   pop card
  189.   set lockScreen to false
  190. end closeStack
  191.  
  192. function repInfo repNum
  193. --given a rep number, return office_num,quota,sales,percent,last_name
  194. if repNum is empty then return empty
  195. put 1 into cdNum
  196. repeat
  197.   put short id of card cdNum of background "Region Data" into myID
  198.   get itemOffset(repNum,field "rep_nr" of card id myID)
  199.   if it > 0 then exit repeat
  200.   if cdNum = number of cards of background "Region Data"
  201.   then exit repeat
  202.   add 1 to cdNum
  203. end repeat
  204. if it = 0 then return empty
  205. put the short name of card id myID into myName
  206. if myName is "All Regions" then return empty
  207.  
  208. put word 2 of myName into line 1 of data
  209. put item it of field "quota" of card id myID into line 2 of data
  210. put item it of field "sales" of card id myID into line 3 of data
  211. put item it of field "percent" of card id myID into line 4 of data
  212. put item it of field "last_name" of card id myID into line 5 of data
  213.  
  214. return data
  215. end repInfo
  216.  
  217. on arrowKey
  218.   if inDebug() then pass arrowKey
  219. end arrowKey
  220.  
  221. function maxItem itemList
  222. put 0 into largest
  223. repeat with i = 1 to the number of items in itemList
  224.   if item i of itemList > largest then
  225.     put item i of itemList into largest
  226.   end if
  227. end repeat
  228. return largest
  229. end maxItem
  230.  
  231. function addComma moneyItem
  232. if moneyItem contains "," then return moneyItem
  233. get the number of chars in moneyItem
  234. if it > 6 then put "," after char (it-6) of moneyItem
  235. return moneyItem
  236. end addComma
  237.  
  238. function addDecimal moneyItem
  239. if moneyItem contains "." then return moneyItem
  240. return moneyItem & ".00"
  241. end addDecimal
  242.  
  243. function deleteComma dataItem
  244. get offset (",", dataItem)
  245. if it is not 0 then put empty into char it of dataItem
  246. return dataItem
  247. end deleteComma
  248.  
  249. function regionNumber cardName
  250. return word 2 of cardName
  251. end regionNumber
  252.  
  253. function RegionalRepNums regionNum
  254. put "Region" && regionNum into cardName
  255. return field "rep_nr" of card cardName
  256. end RegionalRepNums
  257.  
  258. function RegionalNames regionNum
  259. put "Region" && regionNum into cardName
  260. return field "last_name" of card cardName
  261. end RegionalNames
  262.  
  263. function RegionalFigures regionNum
  264. put "Region" && regionNum into cardName
  265. return field "sales" of card cardName
  266. end RegionalFigures
  267.  
  268. function RegionalPercents regionNum
  269. put "Region" && regionNum into cardName
  270. return field "percent" of card cardName
  271. end RegionalPercents
  272.  
  273. function AllRegionSales
  274. return field "sales" of card "All Regions"
  275. end AllRegionSales
  276.  
  277. function AllRegionNums
  278. return field "office_nr" of card "All Regions"
  279. end AllRegionNums
  280.  
  281. function AllRegionQuotas
  282. return field "quota" of card "All Regions"
  283. end AllRegionQuotas
  284.  
  285. -- This function doesn't appear to work
  286. function ThisRegionData regionNum
  287. put AllRegionNums() into regions
  288. put itemOffset (regionNum, regions) into itemNum
  289. put item itemNum of field "quota" of card "All Regions" & "," into data
  290. put item itemNum of field "sales" of card "All Regions" after data
  291. return data
  292. end ThisRegionData
  293.  
  294. on DrawLargeBar area,percent
  295.   --draw the large bars that are in the region & rep cards
  296.   --the bar‚Äôs width is barWidth; sideMargin is not used here.
  297.   global barWidth,botMargin
  298.   set cursor to watch
  299.   put item 1 of area into x1
  300.   put item 3 of area into x2
  301.   put item 2 of area into y1
  302.   put item 4 of area into y2
  303.  
  304.   get (x2 - x1 - barWidth) div 2
  305.   put x1 + it into item 1 of area
  306.   put x1 + it + barWidth into item 3 of area
  307.  
  308.   get y2 - botMargin
  309.   put it - round ((it - y1) * percent / 100) into item 2 of area
  310.   put it into item 4 of area
  311.  
  312.   reset paint
  313.   set lineSize to 1
  314.   set filled to true
  315.   DrawSingleBar area
  316.   choose browse tool
  317. end DrawLargeBar
  318.  
  319. on DrawSingleBar area
  320.   --draw a bar of specified area
  321.   --assume the paint settings have been pre-set.
  322.   choose select tool
  323.   drag from (item 1 to 2 of area) to (item 3 to 4 of area)
  324.   doMenu "Opaque"
  325.   set pattern to 12
  326.   doMenu Fill
  327.   wait 10
  328.   set pattern to 22
  329.   doMenu Fill
  330.   wait 10
  331.   set pattern to 14
  332.   doMenu Fill
  333. end DrawSingleBar
  334.  
  335. on adjustFrameHeight
  336.   --answer "Can't handle that large a % yet, but we will." with "OK"
  337.   --exit to HyperCard
  338. end adjustFrameHeight
  339.  
  340. -- Convert percents to 1 digit of precision
  341. function formatPercent num
  342. get offset (".", num)
  343. put empty into char it+2 to 16 of num
  344. return num & "%"
  345. end formatPercent
  346.  
  347. function itemOffset anItem, list
  348. repeat with i = 1 to the number of items in list
  349.   if item i of list = anItem then return i
  350. end repeat
  351. return 0
  352. end itemOffset
  353.  
  354. function lineOffset myLine, list
  355. repeat with i = 1 to the number of lines in list
  356.   if line i of list = myLine then return i
  357. end repeat
  358. return 0
  359. end lineOffset
  360.  
  361. function addQuotes string
  362. return quote & string & quote
  363. end addQuotes
  364.  
  365. on openCard
  366.   hide menubar
  367. end openCard
  368.  
  369.  
  370.